package com.bank.dto;

import lombok.Data;

import javax.validation.constraints.*;
import java.math.BigDecimal;

/**
 * 银行卡开户请求DTO
 * 专门用于开户操作，避免完整实体验证问题
 * 
 * @author 开发团队
 * @version 1.0.0
 * @since 2025-06-21
 */
@Data
public class CardOpenRequest {

    /**
     * 卡号-16位数字主键
     */
    @NotBlank(message = "卡号不能为空")
    @Pattern(regexp = "^[0-9]{16}$", message = "卡号格式不正确，应为16位数字")
    private String cardId;

    /**
     * 客户编号-外键
     */
    @NotNull(message = "客户编号不能为空")
    private Integer customerId;

    /**
     * 存款类型编号-外键
     */
    @NotNull(message = "存款类型编号不能为空")
    private Integer savingId;

    /**
     * 币种-默认人民币
     */
    private String curId = "RMB";

    /**
     * 开卡金额-不少于1元
     */
    @NotNull(message = "开卡金额不能为空")
    @DecimalMin(value = "1.00", message = "开卡金额不能少于1元")
    @Digits(integer = 13, fraction = 2, message = "开卡金额格式不正确")
    private BigDecimal openMoney;

    /**
     * 取款密码-6位数字，可选
     */
    @Pattern(regexp = "^[0-9]{6}$|^$", message = "取款密码格式不正确，应为6位数字")
    private String password;
}
